package com.teamwings.modules.head.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 *  表单头
 * </p>
 *
 * @author admin
 * @since 2021-05-06
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("FORM_TABLE_HEAD")
public class FormTableHead implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(value = "ID")
    private String id;

    /**
     * 分类编号（一对一关联form_table_cate数据）
     */
    @TableField("TABLE_CATE_ID")
    private String tableCateId;

    /**
     * 自定义表单中文名
     */
    @TableField("TABLE_CNAME")
    private String tableCname;

    /**
     * 数据库表名（没有值就自动生成一个）
     */
    @TableField("TABLE_NAME")
    private String tableName;

    /**
     * 自定义表单当前使用的版本
     */
    @TableField("TABLE_VERSION")
    private Integer tableVersion;

    /**
     * 自定义表单描述
     */
    @TableField("TABLE_TXT")
    private String tableTxt;

    /**
     * 外部数据源的链接地址
     */
    @TableField("EX_ADDRESS")
    private String exAddress;

    /**
     * 创建人
     */
    @TableField(value = "CREATE_BY", fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新人
     */
    @TableField(value = "UPDATE_BY", fill = FieldFill.UPDATE)
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
    private Date updateTime;

    /**
     * 是否被软删除 (逻辑删除)
     */
    @TableLogic
    private Integer deleted;

    /**
     * 自动 type = 0, 无数据源 type = 1  外部数据来源 type = 2
     */
    @TableField("SOURCE_TYPE")
    private Integer sourceType;

    /**
     * 最新的版本
     */
    @TableField(exist = false, value = "newTableVersion")
    private Integer newTableVersion;

}
